/**  
 * @Title:  BaseModel.java   
 * @Package com.vrv.common.model   
 * @author: LQ     
 * @date:   2017年2月25日 下午2:06:56   
 * @version V1.0 
 */
package com.vrv.common.model;

import java.io.Serializable;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/**   
 * @ClassName:  BaseModel   
 * @Description:所有model类的超级类 重写toString方法，方法中包含该bean类的所有字段及其对应值  
 * @author: LQ
 * @date:   2017年2月25日 下午2:06:56
 */
public class BaseModel implements Serializable {
    
    private static final long serialVersionUID = -8952333320999172350L;
    
    @Override
    public String toString() {
        super.toString();
        StringBuffer res = new StringBuffer();
        Class<?> clazz = this.getClass();
        res.append(clazz.getName() + ":");
        // 获取当前类的所有公共属性
        Field[] fields = clazz.getDeclaredFields();
        for (Field field : fields) {
            if (field.getModifiers() == 2) {
                String fieldName = field.getName();
                String methodName = "get" + fieldName.substring(0, 1).toUpperCase()
                        + fieldName.substring(1);
                res.append(fieldName + ":");
                try {
                    Method getMethod = clazz.getMethod(methodName);
                    Object getValue = getMethod.invoke(this);
                    if (null != getValue) {
                        res.append(getValue.toString());
                    } else {
                        res.append("");
                    }
                } catch (NoSuchMethodException e) {
                    e.printStackTrace();
                } catch (SecurityException e) {
                    e.printStackTrace();
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                } catch (IllegalArgumentException e) {
                    e.printStackTrace();
                } catch (InvocationTargetException e) {
                    e.printStackTrace();
                }
                res.append(";");
            }

        }

        return res.toString();
    }
    
}
